using System;
using System.Collections.Generic;
using System.Text;
using System.Data;

namespace SharpObjects.Data
{
    public class DataTypeConverter
    {
        public static Type ToType(eDataType dtype)
        {
            if (dtype == eDataType.DateTime)
            {
                return typeof(DateTime);
            }
            else if (dtype == eDataType.Boolean)
            {
                return typeof(bool);
            }
            else if (dtype == eDataType.Byte)
            {
                return typeof(byte);
            }
            else if (dtype == eDataType.Int)
            {
                return typeof(Int32);
            }
            else if (dtype == eDataType.Long)
            {
                return typeof(Int64);
            }
            else if (dtype == eDataType.Double)
            {
                return typeof(Double);
            }
            else if (dtype == eDataType.Decimal)
            {
                return typeof(Decimal);
            }
            else if (
                   dtype == eDataType.Char
                || dtype == eDataType.UnicodeChar)
            {
                return typeof(char);
            }
            else if (
                   dtype == eDataType.AnsiString
                || dtype == eDataType.AnsiStringFixedLength
                || dtype == eDataType.Text
                || dtype == eDataType.UnicodeString
                || dtype == eDataType.UnicodeStringFixedLength
                || dtype == eDataType.UnicodeText)
            {
                return typeof(string);
            }
            else if (dtype == eDataType.Binary)
            {
                return typeof(byte[]);
            }
            else if (dtype == eDataType.Recordset)
            {
                return typeof(DataRowCollection);
            }
            else if (dtype == eDataType.UniqueIdentifier)
            {
                return typeof(Guid);
            }
            else
            {
                throw new ArgumentException("Invalid eDataType value: " + dtype);
            }
        }
    }
}
